package com.ruoyi.collect.service;

import com.ruoyi.collect.domain.CollectTask;
import java.util.List;

/**
 * 采集任务服务接口
 *
 * @author ruoyi
 * @date 2025-11-07
 */
public interface ICollectTaskService {
    /**
     * 查询采集任务
     *
     * @param taskId 任务ID
     * @return 采集任务
     */
    public CollectTask selectCollectTaskById(Long taskId);

    /**
     * 查询采集任务列表
     *
     * @param collectTask 采集任务
     * @return 采集任务列表
     */
    public List<CollectTask> selectCollectTaskList(CollectTask collectTask);

    /**
     * 新增采集任务
     *
     * @param collectTask 采集任务
     * @return 结果
     */
    public int insertCollectTask(CollectTask collectTask);

    /**
     * 修改采集任务
     *
     * @param collectTask 采集任务
     * @return 结果
     */
    public int updateCollectTask(CollectTask collectTask);

    /**
     * 批量删除采集任务
     *
     * @param taskIds 需要删除的任务ID
     * @return 结果
     */
    public int deleteCollectTaskByIds(Long[] taskIds);

    /**
     * 删除采集任务
     *
     * @param taskId 任务ID
     * @return 结果
     */
    public int deleteCollectTaskById(Long taskId);

    /**
     * 获取运行中的任务
     *
     * @return 运行中的任务列表
     */
    public List<CollectTask> selectRunningTasks();

    /**
     * 更新任务状态
     *
     * @param taskId 任务ID
     * @param status 新状态
     * @return 结果
     */
    public int updateTaskStatus(Long taskId, String status);

    /**
     * 更新任务进度
     *
     * @param taskId 任务ID
     * @param currentPage 当前页
     * @param totalPages 总页数
     * @param collectedCount 已采集数量
     * @return 结果
     */
    public int updateTaskProgress(Long taskId, Integer currentPage, Integer totalPages, Integer collectedCount);

    /**
     * 标记任务完成
     *
     * @param taskId 任务ID
     * @param successCount 成功数量
     * @param failureCount 失败数量
     * @return 结果
     */
    public int completeTask(Long taskId, Integer successCount, Integer failureCount);

    /**
     * 标记任务失败
     *
     * @param taskId 任务ID
     * @param errorMsg 错误信息
     * @return 结果
     */
    public int failTask(Long taskId, String errorMsg);
}